package com.ruoyi.fetv.service.impl;

import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.fetv.controller.vo.comment.AddReq;
import com.ruoyi.fetv.controller.vo.comment.EditReq;
import com.ruoyi.fetv.domain.FetvComment;
import com.ruoyi.fetv.mapper.FetvCommentMapper;
import com.ruoyi.fetv.service.IFetvCommentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 资讯评论Service业务层处理
 *
 * @author Jack
 * @date 2023-03-07
 */
@Service
public class FetvCommentServiceImpl implements IFetvCommentService {
    @Autowired
    private FetvCommentMapper fetvCommentMapper;

    /**
     * 查询资讯评论
     *
     * @param id 资讯评论主键
     * @return 资讯评论
     */
    @Override
    public FetvComment selectFetvCommentById(Long id) {
        return fetvCommentMapper.selectFetvCommentById(id);
    }

    /**
     * 查询资讯评论列表
     *
     * @param fetvComment 资讯评论
     * @return 资讯评论
     */
    @Override
    public List<FetvComment> selectFetvCommentList(FetvComment fetvComment) {
        return fetvCommentMapper.selectFetvCommentList(fetvComment);
    }

    /**
     * 新增资讯评论
     *
     * @param fetvComment 资讯评论
     * @return 结果
     */
    @Override
    public int insertFetvComment(AddReq fetvComment) {
        // 当为评论评论时
        if (fetvComment.getParentId() != null) {
            FetvComment parentComment = fetvCommentMapper.selectFetvCommentById(fetvComment.getParentId());
            if (parentComment != null) {
                fetvComment.setInformationId(parentComment.getInformationId());
            } else {
                throw new ServiceException("不能对不存在的评论进行评论");
            }
        }
        fetvComment.setCreateTime(DateUtils.getNowDate());
        return fetvCommentMapper.insertFetvComment(fetvComment);
    }

    /**
     * 修改资讯评论
     *
     * @param fetvComment 资讯评论
     * @return 结果
     */
    @Override
    public int updateFetvComment(EditReq fetvComment) {
        fetvComment.setUpdateTime(DateUtils.getNowDate());
        return fetvCommentMapper.updateFetvComment(fetvComment);
    }

    /**
     * 批量删除资讯评论
     *
     * @param ids 需要删除的资讯评论主键
     * @return 结果
     */
    @Override
    public int deleteFetvCommentByIds(Long[] ids) {
        return fetvCommentMapper.deleteFetvCommentByIds(ids);
    }


    /**
     * 删除资讯评论信息
     *
     * @param id 资讯评论主键
     * @return 结果
     */
    @Override
    public int deleteFetvCommentById(Long id) {
        return fetvCommentMapper.deleteFetvCommentById(id);
    }
}
